Запрос SEND

Состояние CLOSED (например, нет блока TCB)

Если клиент не имеет доступа к такому соединению, то вернуть сообщение "error: connection illegal for this process". В противном случае вернуть "error: connection does not exist".

Состояние LISTEN

Если указан чужой сокет, то сменить состояние соединения с пассивного на активный, выбрать номер ISS. Послать сегмент с сигналом SYN, установить SND.UNA в ISS, а SND.NXT - в ISS+1. Установить новое состояние SYN-SENT. Данные из вызова SEND могут быть посланы вместе с сигналом SYN, а могут быть помещены в очередь и отправлены уже после установления ESTABLISHED состояния. Если в команде дан запрос на применение бита срочности, то он должен быть передан вместе с сегментом данных, возникающим при выполнении этой команды. Если в очереди нет места для запроса, то вернуть сообщение "error: insufficient resources". Если чужой сокет не указан, то вернуть "error: foreign socket unspecified".

Состояние SYN-SENT

Состояние SYN-RECEIVED

Поместить данные в очередь с тем, чтобы отправить после установления ESTABLISHED состояния. Если в очереди нет места, то вернуть сообщение "error: insufficient resources".

Состояние ESTABLISHED

Состояние CLOSE-WAIT

Сегментировать буфер данных и переслать его с ответным подтверждением (значение подтверждения = RCV.NXT). Если для размещения этого буфера недостаточно места в памяти, то просто вернуть сообщение "error: insufficient resources".

Если установлен флаг срочности, то занести в SND.UP значение SND.NXT-1 и установить указатель срочности на уходящие сегменты.

Состояния

      FIN-WAIT-1
      FIN-WAIT-2
      CLOSING
      LAST-ACK
      TIME-WAIT

Вернуть сообщение "error: connection closing" и не выполнять запрос клиента.

Hosted by uCoz